﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Tibet.GUI.Contrato;
using Tibet.Entidades;
using Tibet.Logica.Comandos;
using Tibet.Logica.FabricaLogica;
using Logica.Comandos.ComandoAdministracionProyecto;
using System.Web.UI.WebControls;
using Tibet.Logica.Comandos.ComandoAdministracionProyecto;

namespace Tibet.GUI.Presentador
{
    public class PresentadorArchivarProyecto
    {
        IArchivarProyecto _vista;
        List<Entidad> listaProyecto = new List<Entidad>();
        List<Entidad> listaDesarrolladores = new List<Entidad>();
        Entidad proyecto = new Entidad();

        public PresentadorArchivarProyecto(IArchivarProyecto vista)
        {
            _vista = vista;
        }
        int i = 1;
        public void ConsultarProyectosActivos()
        {
            // Colsulta los proyectos activos y los llena en el GridView
            Comando comando = FabricaComandoProyecto.ObtenerComandoConsultarProyectosActivos();
            (comando as ConsultarProyectosActivos).Ejecutar();
            listaProyecto = comando.ListaEntidad;
            _vista.GridViewArchivarProyecto.DataSource = listaProyecto;
            _vista.GridViewArchivarProyecto.DataBind();

        }

        public void ConsultarProyectoPorId(int idProyecto)
        {
            // Colsulta los proyectos por id y los llena los label correspondientes
            Comando comando = FabricaComandoProyecto.ObtenerComandoConsultarProyectosPorId();
            comando.Id = idProyecto;
            (comando as ConsultarProyectoPorId).Ejecutar();
            proyecto = comando.Entidad;
            _vista.NombreProyecto.Text = (proyecto as Proyecto).Nombre;
            _vista.Dias.Text = (proyecto as Proyecto).Dias.ToString();
            _vista.RutaProyecto.Text = (proyecto as Proyecto).Ruta;
        }

        public void ConsultarClientePorId(int idCliente)
        {
            // Colsulta cliente por id y los llena los label correspondientes
            Comando comando = FabricaComandoProyecto.ObtenerComandoConsultarClientePorId();
            comando.Id = idCliente;
            (comando as ConsultarClientePorId).Ejecutar();
            proyecto = comando.Entidad;
            _vista.NombreCliente.Text = (proyecto as Cliente).Nombre;
        }

        public void ConsultarPerfilMetricaPorId(int id)
        {
            // Colsulta los perfil metrica por id y los llena los label correspondientes
            Comando comando = FabricaComandoProyecto.ObtenerComandoConsultarPerfilMetricaPorId();
            comando.Id = id;
            (comando as ConsultarPerfilMetricaPorId).Ejecutar();
            proyecto = comando.Entidad;
            _vista.NombrePerfilMetricas.Text = (proyecto as PerfilMetrica).NombrePerfilMetrica;
        }


        public void ConsultarPerfilReglaPorId(int id)
        {
            // Colsulta los perfil regla por id y los llena los label correspondientes
            Comando comando = FabricaComandoProyecto.ObtenerComandoConsultarPerfilReglaPorId();
            comando.Id = id;
            (comando as ConsultarPerfilReglaPorId).Ejecutar();
            proyecto = comando.Entidad;
            _vista.NombrePerfilReglas.Text = (proyecto as Perfil_Regla).NombrePerfilRegla;
        }

        public void ArchivarProyecto(int idProyecto)
        {
            //Archiva el proyecto
            Comando comando = FabricaComandoProyecto.ObtenerComandoArchivarProyecto();
            comando.Id = idProyecto;
            (comando as ArchivarProyecto).Ejecutar();
            
        }

        public void InsertarFechaArchivada(int id)
        {
            // Inserta la fecha de hoy en el archivado del proyecto
            Comando comando = FabricaComandoProyecto.ObtenerComandoInsertarFechaCulminacionPorProyecto();
            comando.Id = id;
            (comando as InsertarFechaCulminacionPorProyecto).Ejecutar();
        }

        public void ConsultarTodosDesarrolladores(int id)
        {
            //Consulta los desarrolladores de un proyecto
            Comando comando = FabricaComandoProyecto.ObtenerComandoConsultarDesarrollador();
            comando.Id = id;
            (comando as ConsularDesarrolladorPorProyecto).Ejecutar();
            listaDesarrolladores = comando.ListaEntidad;
            foreach (Entidad desarrollador in listaDesarrolladores)
            {
                Label nombreDesarrollador = new Label();
                Label nombreRol = new Label();
                nombreDesarrollador.Width = 200;
                nombreDesarrollador.Height = 20;
                nombreRol.Width = 100;
                nombreRol.Height = 20;
                nombreDesarrollador.Text =" - " +(desarrollador as Tibet.Entidades.Usuario).Nombre;
                nombreRol.Text = " - " + (desarrollador as Tibet.Entidades.Usuario).Rol.NombreRol;
                _vista.PanelDesarrolladores.Controls.Add(nombreDesarrollador);
                _vista.PanelDesarrolladores.Controls.Add(nombreRol);
            }


        }
    }
}